From c94648bafa14c046a38d66be745750e1d2a09892 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Wed, 22 Oct 2014 15:33:08 -0700 Subject: [PATCH] Don't de-dup added sources We have a hash map on the side and a method that already aborts re-adding a source if it was already added. --- src/cargo/core/registry.rs | 15 ++------------- src/cargo/ops/cargo_fetch.rs | 2 +- src/cargo/ops/cargo_generate_lockfile.rs | 2 +- 3 files changed, 4 insertions(+), 15 deletions(-) diff --git a/src/cargo/core/registry.rs b/src/cargo/core/registry.rs index 007cf4b76..171b73d83 100644 --- a/src/cargo/core/registry.rs +++ b/src/cargo/core/registry.rs @@ -70,8 +70,8 @@ impl<'a> PackageRegistry<'a> { Ok(()) } - pub fn add_sources(&mut self, ids: Vec) -> CargoResult<()> { - for id in dedup(ids).iter() { + pub fn add_sources(&mut self, ids: &[SourceId]) -> CargoResult<()> { + for id in ids.iter() { try!(self.load(id, false)); } Ok(()) @@ -119,17 +119,6 @@ impl<'a> PackageRegistry<'a> { } } -fn dedup(ids: Vec) -> Vec { - let mut seen = vec!(); - - for id in ids.into_iter() { - if seen.contains(&id) { continue; } - seen.push(id); - } - - seen -} - impl<'a> Registry for PackageRegistry<'a> { fn query(&mut self, dep: &Dependency) -> CargoResult> { let overrides = try!(self.query_overrides(dep)); diff --git a/src/cargo/ops/cargo_fetch.rs b/src/cargo/ops/cargo_fetch.rs index 054ef4289..e4581f627 100644 --- a/src/cargo/ops/cargo_fetch.rs +++ b/src/cargo/ops/cargo_fetch.rs @@ -35,7 +35,7 @@ pub fn resolve_and_fetch(registry: &mut PackageRegistry, package: &Package) Some(ref r) => r.iter().map(|p| p.get_source_id().clone()).collect(), None => vec![package.get_package_id().get_source_id().clone()], }; - try!(registry.add_sources(sources)); + try!(registry.add_sources(sources.as_slice())); let mut resolved = try!(resolver::resolve(package.get_summary(), resolver::ResolveEverything, diff --git a/src/cargo/ops/cargo_generate_lockfile.rs b/src/cargo/ops/cargo_generate_lockfile.rs index 5e11626c4..24baf7349 100644 --- a/src/cargo/ops/cargo_generate_lockfile.rs +++ b/src/cargo/ops/cargo_generate_lockfile.rs @@ -83,7 +83,7 @@ pub fn update_lockfile(manifest_path: &Path, } None => {} } - try!(registry.add_sources(sources)); + try!(registry.add_sources(sources.as_slice())); let mut resolve = try!(resolver::resolve(package.get_summary(), resolver::ResolveEverything, -- 2.30.2